package com.happy.unitconvert.model.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 汇率数据包装类
 * 用于包装各种汇率API返回的数据，并添加数据来源标识
 *
 * @author Happy
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ExchangeRateDataWrapper<T> {

    /**
     * 汇率数据
     */
    private T list;

    /**
     * 是否来自缓存
     * true: 数据来自缓存
     * false: 数据来自API实时获取
     */
    private boolean isFromCache;

    /**
     * 创建包含汇率列表的包装对象
     *
     * @param rates       汇率数据
     * @param isFromCache 是否来自缓存
     * @return 包装对象
     */
    public static ExchangeRateDataWrapper<Map<String, BigDecimal>> ofRates(Map<String, BigDecimal> rates,
                                                                           boolean isFromCache) {
        return ExchangeRateDataWrapper.<Map<String, BigDecimal>>builder()
                .list(rates)
                .isFromCache(isFromCache)
                .build();
    }

}
